/* vim: set sw=8 ts=8 sts=8 expandtab: */
#ifndef CMAID_SKIP_LIST_H
#define CMAID_SKIP_LIST_H

/**
 * @addtogroup Cmaid_Skip_List
 * @{
 */
EAPI Cmaid_Set          *cmaid_skip_list_set_new(unsigned int h,
                                                        const Cmaid_Value *v);
EAPI Cmaid_Map          *cmaid_skip_list_map_new(unsigned int h,
                                                        const Cmaid_Value *k,
                                                        const Cmaid_Value *v);
EAPI Cmaid_Cache        *cmaid_skip_list_cache_new(const Cmaid_Value *v);

/*
 * The interface structures, use them on your own risk, or even better do not
 * use them at all
 */
EAPI extern const Cmaid_Set_Interface          cmaid_skip_list_set_if;
EAPI extern const Cmaid_Map_Interface          cmaid_skip_list_map_if;
EAPI extern const Cmaid_Cache_Interface        cmaid_skip_list_cache_if;
EAPI extern const Cmaid_Iter_Interface         cmaid_skip_list_key_iter_if;
EAPI extern const Cmaid_Iter_Interface         cmaid_skip_list_value_iter_if;

/**
 * @}
 */

#endif
